home *** CD-ROM | disk | FTP | other *** search
- /*
- ** $VER: $Id: PZ_MakePic_Color.rexx,v 5.0 1993/11/12 01:14:23 chris Exp $
- ** Copyright (C) 1992, 1993 by Christian A. Weber, Zürich, Switzerland.
- ** REXX script internally used by PicZoo. Do not start manually.
- **
- ** You may wish to change MAXMEM for ADPro if you don't have enough RAM,
- ** and the delay after loading if you have a slow HD :)
- */
-
- options results
- arg adprodir filename maxwidth maxheight
- address 'ADPro'
-
-
- /*
- ** Make sure ADPro is running
- */
- IF ~show(ports,'ADPro') THEN
- DO
- Address COMMAND 'C:Assign ADPRO: '||adprodir
- Address COMMAND 'Run >NIL: ADPRO:ADPro MAXMEM=5000000 BEHIND'
- Address COMMAND 'C:Wait 5'
- IF ~show(ports,'ADPro') THEN EXIT
- END
-
-
- /*
- ** Screen types for ADPro
- */
- LORES = 0
- HIRES = 1
- LACE = 2
- PAL = 4
- XOVERSCAN = 8
- YOVERSCAN = 16
-
- HIRESBIT = 0
- LACEBIT = 1
-
-
- /*
- ** Now load the picture ...
- */
- SCREEN_TYPE LORES
- LFORMAT 'UNIVERSAL'
- LOAD filename
-
- IF RC == 0 THEN DO
-
- /*
- ** Get the picture size
- */
- XSIZE
- origwidth = ADPRO_RESULT
- YSIZE
- origheight = ADPRO_RESULT
-
-
- /*
- ** Make a text string of the picture mode and size, and store it
- ** in an environment variable
- */
- IMAGE_TYPE
- type = WORD(ADPRO_RESULT,1)
- if type = "GRAY" THEN DO
- type = "G (" || origwidth || "x" || origheight || ")"
- END
- ELSE DO
- type = "C (" || origwidth || "x" || origheight || ")"
- END
- Address COMMAND SetEnv PICZOO_IMAGETYPE type
-
-
- /*
- ** If we have an interlaced lo-res or a non-interlaced hi-res
- ** picture, we must correct the aspect ratio accordingly.
- ** We do this by changing orgwidth or orgheight.
- */
- SCREEN_TYPE
- viewmode = ADPRO_RESULT
-
- IF BITTST(viewmode, HIRESBIT) THEN DO
- origwidth = origwidth / 2
- Say 'Hi-Res.'
- END
-
- IF BITTST(viewmode, LACEBIT) THEN DO
- origheight = origheight / 2
- Say 'Interlaced.'
- END
-
- IF origwidth > origheight THEN DO
- width = maxwidth
- height = (origheight * maxwidth) / origwidth
- END
- ELSE DO
- width = (origwidth * maxheight) / origheight
- height = maxheight
- END
-
-
- /*
- ** Set the palette to match the PicZoo screen
- */
- POFFSET 0
- PTOTAL 16
- PUSED 16
- PPOKE 0 170 170 170
- PPOKE 1 0 0 0
- PPOKE 2 255 255 255
- PPOKE 3 255 0 255
- PPOKE 4 34 34 34
- PPOKE 5 51 51 51
- PPOKE 6 68 68 68
- PPOKE 7 85 85 85
- PPOKE 8 102 102 102
- PPOKE 9 119 119 119
- PPOKE 10 136 136 136
- PPOKE 11 153 153 153
- PPOKE 12 187 187 187
- PPOKE 13 204 204 204
- PPOKE 14 221 221 221
- PPOKE 15 238 238 238
- PSTATUS LOCKED
-
-
- /*
- ** Now set the parameters for the screenmode depending on the
- ** picture's type (GRAY or COLOR).
- ** Gray pictures will have 16 gray levels, color pictures will
- ** be in HiRes-HAM6 (4096 colors).
- */
- IMAGE_TYPE
- IF WORD(ADPRO_RESULT,1) = "GRAY" THEN DO
- RENDER_TYPE 16
- END
- ELSE DO
- PTOTAL HAM
- RENDER_TYPE HAM
- END
-
-
- /*
- ** Make sure we get the best dynamic range
- */
- OPERATOR DYNAMIC_RANGE 0 255
-
-
- /*
- ** Now we scale the image to width/height
- */
- ABS_SCALE width height
-
-
- /*
- ** Render the image without any dithering
- */
- DITHER 0 /* (1=Floyd-Steinberg) */
- SCREEN_TYPE LORES
- EXECUTE
-
-
- /*
- ** Now save the image as a temp file, where PicZoo can get it.
- */
- SFORMAT 'IFF'
- SAVE 'T:__PicZooTmp.iff' 'IMAGE'
-
- END
- ELSE DO
- /*
- ** LOAD returned an error
- */
- say filename || ': not a picture'
- END
-
-